<?php

class SiteController extends FrontEndController
{
	public $layout='column2';
	
	/**
	 * Declares class-based actions.
	 */
	public function actions()
	{
		$alias = Yii::app()->request->getParam('alias','');
		$content = Content::model()->find("content_alias = :content_alias", array(":content_alias" => $alias));
		
		if ( $content === null && isset($alias) && $alias!=NULL){
			throw new CHttpException(404, 'The requested page does not exist.');
		} elseif($alias != NULL && $content != null) {
			return array(
					// captcha action renders the CAPTCHA image displayed on the contact page
					'captcha'=>array(
							'class'=>'CCaptchaAction',
							'backColor'=>0xFFFFFF,
					),
					// page action renders "static" pages stored under 'protected/views/site/pages'
					// They can be accessed via: index.php?r=site/page&view=FileName
					'page'=>array(
							'class'=>'application.components.CViewAndDataAction',
							'basePath' => 'application.views.frontend.site.pages',
							'defaultView' => 'content',
							'data' => $content->attributes,
					),
			);
		} else {
			return array(
					// captcha action renders the CAPTCHA image displayed on the contact page
					'captcha'=>array(
							'class'=>'CCaptchaAction',
							'backColor'=>0xFFFFFF,
					),
					// page action renders "static" pages stored under 'protected/views/site/pages'
					// They can be accessed via: index.php?r=site/page&view=FileName
					'page'=>array(
							'class'=>'CViewAction',
					),
			);
		}
		
	}
	
	public function actionIndex()
	{
		if (isset($model))
			$this->render('index',array('model'=>$model));
		else 
			$this->render('index');
	}
	/**
	 * This is the action to handle external exceptions.
	 */
	public function actionError()
	{
	    if($error=Yii::app()->errorHandler->error)
	    {
	    	if(Yii::app()->request->isAjaxRequest)
	    		echo $error['message'];
	    	else
	        	$this->render('error', $error);
	    }
	}

	/**
	 * Displays the contact page
	 */
	public function actionContact()
	{
		$model=new ContactForm;
		if(isset($_POST['ContactForm']))
		{
			$model->attributes=$_POST['ContactForm'];
			if($model->validate())
			{
				$headers="From: {$model->email}\r\nReply-To: {$model->email}";
				mail(Yii::app()->params['adminEmail'],$model->subject,$model->body,$headers);
				Yii::app()->user->setFlash('contact','Спасибо. Наши специалисты скоро с Вами свяжутся.');
				$this->refresh();
			}
		}
		$this->render('contact',array('model'=>$model));
	}

	/**
	 * Displays the login page
	 */
	public function actionSearch()
	{
		$sql = "SELECT p.id, p.title AS title, 'post' AS t, 'Вопросы юристу' AS r  FROM {{post}} AS p WHERE p.content LIKE '%".$_GET['search']."%' OR  p.title LIKE '%".$_GET['search']."%'";
		$sql .= " UNION ALL SELECT c.id, c.title AS title, 'category' AS t, 'Вопросы юристу' AS r FROM {{category}} AS c WHERE c.title LIKE '%".$_GET['search']."%'";
		$sql .= " UNION ALL SELECT com.id, com.content AS title, 'comment' AS t, 'Вопросы юристу' AS r FROM {{comment}} AS com WHERE com.content LIKE '%".$_GET['search']."%'";
		$sql .= " UNION ALL SELECT id, d.name AS title, 'documentSituations' AS t, 'Создай свой документ' AS r FROM {{document_situations}} AS d WHERE d.name LIKE '%".$_GET['search']."%'";
		$sql .= " UNION ALL SELECT history_id AS id, history_name AS title, 'history' AS t, 'Истории успеха' AS r  FROM {{history}} AS h WHERE h.history_name LIKE '%".$_GET['search']."%' OR h.history_anons LIKE '%".$_GET['search']."%' OR h.history_text LIKE '%".$_GET['search']."%'";
		$sql .= " UNION ALL SELECT case_id AS id, case_name AS title, 'cases' AS t, 'Частные случаи' AS r FROM {{cases}} AS cas WHERE cas.case_name LIKE '%".$_GET['search']."%' OR cas.case_anons LIKE '%".$_GET['search']."%' OR cas.case_text LIKE '%".$_GET['search']."%'";
		$sql .= " UNION ALL SELECT id, name AS title, 'office' AS t, 'Кабинеты компаний' AS r FROM {{office}} AS o WHERE o.name LIKE '%".$_GET['search']."%' OR o.anons LIKE '%".$_GET['search']."%' OR o.text LIKE '%".$_GET['search']."%' OR o.adres LIKE '%".$_GET['search']."%'";
		$sql .= " UNION ALL SELECT id, name AS title, 'addressJudge' AS t, 'Адреса судов' AS r FROM {{address_judge}} AS j WHERE j.name LIKE '%".$_GET['search']."%' OR j.judge_address LIKE '%".$_GET['search']."%' OR j.judge_phone1 LIKE '%".$_GET['search']."%'";
		
		$connection=Yii::app()->db;
		$result=$connection->createCommand($sql)->queryAll();
		// display the login form
		$this->render('search',array('model'=>$result));
		
	}
	public function actionForgot()
	{
		if (Yii::app()->user->isGuest){
			$model=new ForgotForm;
			if(isset($_POST['ForgotForm']))
			{
				$model->attributes=$_POST['ForgotForm'];
				if($model->validate())
				{
					$post = Yii::app()->request->getParam('ForgotForm');
					$user = Users::model()->find("email = :email", array(":email" => $post['email']));
					if($user){
						$from = Yii::app()->params['adminEmail'];
						$to = $user->email;
						$headers="From: {$from}\r\nReply-To: {$from}";
						$name = $user->full_name!=NULL ? $user->full_name : 'Пользователь';
						$message = 'Уважаемый '.$name.','."\r\n";
						$message .= 'Для установки нового пароля используйте ссылку:'."\r\n";
						$url = Yii::app()->createAbsoluteUrl('site/forgot', array('hash'=>md5($user->password.$user->id), 'uid'=>$user->id));
						$message .= $url."\r\n";
						$message .= '---'."\r\n";
						$message .= 'Это письмо было сгенерировано автоматически. Пожалуйста не отвечайте на его содержимое'."\r\n";
						$message .= 'С уважениям, Подам В Суд.'."\r\n";
						mail($to,'Востановления пароля',$message,$headers);
						Yii::app()->user->setFlash('forgot','На вашу почту отправлен Ваш новый пароль.');
						$this->refresh();
					} else {
						Yii::app()->user->setFlash('forgot_messange','Вы ввели не правильный e-mail. Попробуйте пожалуйста еще раз.');
					}
				}
			}
			$hash = Yii::app()->request->getParam('hash');
			$uid = Yii::app()->request->getParam('uid');
			if($hash !=NULL && $uid !=NULL){
				$model = Users::model ()->findByPk ( $uid );
				if ($hash == md5($model->password.$model->id)) {
					$new_pass = $pass = substr(md5(microtime()),rand(0,26),6);
					$saltedpass = User::model ()->ganaratePassword ( $new_pass );
					$model->password = $saltedpass;
					if($model->save ()) {
						Yii::app()->user->setFlash('forgot','Ваш новый пароль: '.$new_pass.'</b><br/>Если вы желаете его сменить, авторизируйтесь, после чего войдите в личный кабинет.');
						$from = Yii::app()->params['adminEmail'];
						$to = $model->email;
						$headers="From: {$from}\r\nReply-To: {$from}";
						$name = $model->full_name!=NULL ? $model->full_name : 'Пользователь';
						$message = 'Уважаемый '.$name.','."\r\n";
						$message .= 'Ваш новый пароль: '.$new_pass."\r\n";
						$message .= '---'."\r\n";
						$message .= 'Это письмо было сгенерировано автоматически. Пожалуйста не отвечайте на его содержимое'."\r\n";
						$message .= 'С уважениям, Подам В Суд.'."\r\n";
						mail($to,'Новый пароль',$message,$headers);
					}
				} else {
					Yii::app()->user->setFlash('forgot_error','Вы ввели не правильную ссылку. Попробуйте пожалуйста еще раз.');
				}
			}
			$this->render('forgot',array('model'=>$model));
		} else {
			$this->redirect(Yii::app()->homeUrl);
		}
	}
	/**
	 * Displays the login page
	 */
	public function actionRegistration()
	{
		if (Yii::app()->user->isGuest){
			$model=new RegistrationForm;
			if(isset($_POST['RegistrationForm']))
			{
				$model->attributes=$_POST['RegistrationForm'];
				if($model->validate()) {
					$post = Yii::app()->request->getParam('RegistrationForm');
					$user=new Users;
					$user->email = $post['email'];
					$user->sex = $post['sex'];
					$user->first_name = $post['first_name'];
					$user->last_name = $post['last_name'];
					$user->full_name = $post['first_name'] . ' ' . $post['last_name'];
					$user->disabled = 1;
					$user->password = Users::model()->ganaratePassword($post['password']);
					$user->save(false);
					
					$from = Yii::app()->params['adminEmail'];
					$to = $user->email;
					$headers="From: {$from}\r\nReply-To: {$from}";
					$name = $user->full_name!=NULL ? $user->full_name : 'Пользователь';
					$message = 'Уважаемый '.$name.','."\r\n";
					$message .= 'Для продолженя регистрации используйте следующую ссылку:'."\r\n";
					$url = Yii::app()->createAbsoluteUrl('site/registration', array('hash'=>md5($user->password.$user->id), 'uid'=>$user->id));
					$message .= $url."\r\n";
					$message .= '---'."\r\n";
					$message .= 'Это письмо было сгенерировано автоматически. Пожалуйста не отвечайте на его содержимое'."\r\n";
					$message .= 'С уважениям, Подам В Суд.'."\r\n";
					mail($to,'Регистрация',$message,$headers);
					Yii::app()->user->setFlash('registration','На вашу почту отправлено письмо со следующими инструкциями.');
					$this->refresh();
				}
			}
			$hash = Yii::app()->request->getParam('hash');
			$uid = Yii::app()->request->getParam('uid');
			if($hash !=NULL && $uid !=NULL){
				$model = Users::model ()->findByPk ( $uid );
				if ($hash == md5($model->password.$model->id)) {
					$model->disabled = 0;
					$model->save();
					$this->redirect(Yii::app()->homeUrl);
				} else {
					Yii::app()->user->setFlash('registration_error','Вы ввели не правильную ссылку. Попробуйте пожалуйста еще раз.');
				}
			}
			$this->render('registration',array('model'=>$model));
		} else {
			$this->redirect(Yii::app()->homeUrl);
		}
	}
	/**
	 * Displays the login page
	 */
	public function actionLogin()
	{	
		if (Yii::app()->user->isGuest){
			$model=new LoginForm;
	
			// if it is ajax validation request
			if(isset($_POST['ajax']) && $_POST['ajax']==='login-form')
			{
				echo CActiveForm::validate($model);
				Yii::app()->end();
			}
	
			// collect user input data
			if(isset($_POST['LoginForm']))
			{
				$model->attributes=$_POST['LoginForm'];
				// validate user input and redirect to the previous page if valid
				if($model->validate() && $model->login())
					$url = Yii::app()->user->returnUrl=='index.php' ? Yii::app()->user->returnUrl : '/#/id'.Yii::app()->user->id; 
					$this->redirect($url);
			}
			// display the login form
			$this->render('login',array('model'=>$model));
		} else {
			//require_once $_SERVER['DOCUMENT_ROOT'].'/protected/controllers/frontend/ProfileController.php';
			//ProfileController::actionIndex(Yii::app()->user->id);
			// создаём контроллер, основываясь на нашем роуте
			//$p = Yii::app()->createController('profile/controller/index');
			//$r = $p[0]->actionIndex(Yii::app()->user->id);
			//$this->render('profile/index',array('model'=>$model));
			//$this->redirect(Yii::app()->createUrl('profile/index', array('id'=>Yii::app()->user->id)));
			//$this->layout='empty';
			$url = Yii::app()->user->returnUrl=='index.php' ? Yii::app()->user->returnUrl : '/id'.Yii::app()->user->id;
			//$this->render('loading');
			$this->redirect($url);
			//echo 'fuck';exit;
		}
	}
	
	/**
	 * Logs out the current user and redirect to homepage.
	 */
	public function actionLogout()
	{
		$user = Users::model()->findByPk(Yii::app()->user->id);
		$user->last_visit = date("Y-m-d H:i:s", time() - 15*60);
		$user->save();
		Yii::app()->user->logout();
		$this->redirect(Yii::app()->homeUrl);
	}
}